[iOS 8] PhotoKit 5 – Photos Framework – モデルオブジェクトの削除
はじめに
今回はモデルオブジェクトの削除を扱います。
モデルオブジェクトを削除するにはまず、編集処理がサポートされているかを問い合わせます。編集処理がサポートされていたら PHPhotoLibraryクラスのperformChanges:completionHandler:メソッドの 一つ目の引数のblock内に削除処理を記述します。
PHAssetの削除
PHAssetを削除する場合は、PHAssetChangeRequestクラスのdeleteAssets:メソッドを使用します。 処理完了時の処理は、performChanges:completionHandler:メソッドの2つめのblockに記述します。
// 編集処理がサポートされているか if ([asset canPerformEditOperation:PHAssetEditOperationDelete]) { // 変更をリクエストするblockを実行 [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ // Assetをlibraryから削除 [PHAssetChangeRequest deleteAssets:@[asset]]; } completionHandler:^(BOOL success, NSError *error) { if (success) { NSLog(@"%s delete success.", __PRETTY_FUNCTION__); } else { NSLog(@"%s delete failure. Error: %@", __PRETTY_FUNCTION__, error); } }]; }
確認ダイアログ
deleteAssets:メソッドを呼んだタイミングで以下のようなダイアログが表示されます。
「削除」を選択した場合
「削除」 を選択すると、フォトライブラリから削除されます。(実際にはSmartAlbumのひとつである「Recently Deleted(最近削除された項目)」に追加され、30日後に完全に削除されるようです)
「許可しない」を選択した場合
「許可しない」 を選択すると、completionHandlerのblockの引数にNSErrorオブジェクトが渡されます。 (NSErrorオブジェクトのlocalizedDescriptionは「The operation couldn’t be completed. (Cocoa error -1.)」)
PHCollectionListやPHAssetCollectionの削除
PHCollectionListやPHAssetCollectionに関しても、PHAssetと同様に削除を行えます。 OSが自動生成するMomentリストなどは削除できず、削除できるのは、サードパーティアプリが作成したフォルダやユーザーが作成したフォルダなどに限られるようです。(Photosアプリと同様)
クラス名 | メソッド | 内容 |
---|---|---|
PHCollection (PHCollectionList/PHAssetCollectionのスーパークラス) | canPerformEditOperation: | 編集処理がサポートされているかどうかを返す |
PHCollectionListChangeRequest | deleteCollectionLists: | PHCollectionListの削除用のリクエストを作成 |
PHAssetCollectionChangeRequest | deleteAssetCollections: | PHAssetCollectionの削除用のリクエストを作成 |
まとめ
今回はモデルオブジェクトの削除について説明しました。次回はモデルの変更のハンドリングとコンテンツ編集のrevertを扱います。
参考資料
- Photos Framework Reference
- Introducing the Photos Frameworks - WWDC 2014 Session Videos
本シリーズの記事一覧
- [iOS 8] PhotoKit 1 – Photos Frameworkの概要
- [iOS 8] PhotoKit 2 – Photos Framework – モデルオブジェクトの取得
- [iOS 8] PhotoKit 3 – Photos Framework – モデルオブジェクトのプロパティの編集
- [iOS 8] PhotoKit 4 – Photos Framework – モデルオブジェクトのコンテンツの編集
- [iOS 8] PhotoKit 5 – Photos Framework – モデルオブジェクトの削除
- [iOS 8] PhotoKit 6 – Photos Framework – モデルの変更のハンドリングとコンテンツ編集のrevert
- [iOS 8] PhotoKit 7 – Photos Framework – フォトライブラリへのアクセス許可を得る
- [iOS 8] PhotoKit 8 - UIImagePickerControllerとPhotos Frameworkを組み合わせて使う
- [iOS 8] PhotoKit 9 – Photo Editing Extensionの概要
- [iOS 8] PhotoKit 10 – Photo Editing Extensionの実装 (前篇)
- [iOS 8] PhotoKit 11 – Photo Editing Extensionの実装 (後篇)